﻿#version 330
uniform vec3 Ambient;
uniform vec4 Diffuse;
uniform vec4 Specular;

const vec3 lightPos = vec3 (10.0, 10.0, 0.0);
const vec3 light    = vec3 (1,1,1);

in vec3 f_Position;
in vec3 f_Normal;

out vec4 out_Color;

void main(void)
{
    vec3 lightVec = normalize (lightPos - f_Position);
	vec3 viewVec  = normalize (-f_Position);
	vec3 halfVec  = normalize (viewVec + lightVec);
	vec3 normVec  = normalize (f_Normal);

	vec3 amb = Ambient;
    vec3 dif = Diffuse.xyz * max(0, dot(normVec, lightVec));
	vec3 spc = Specular.xyz * pow(max(0, dot(normVec, halfVec)), Specular.w);

    out_Color = vec4(amb + dif*light + spc*light, Diffuse.a);
}

